package com.dronecontrol.socketcontrol.input; import com.dronecontrol.droneapi.data.NavData; import com.dronecontrol.droneapi.data.NavDataState; import com.dronecontrol.socketcontrol.input.socket.SocketClient; import org.codehaus.jackson.JsonFactory; import org.codehaus.jackson.map.ObjectMapper; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class SocketDataSenderTest { @Mock private SocketClient socketClient; @Mock private NavData navData; @Mock private NavDataState navDataState; private SocketDataSender socketDataSender; @Before public void setUp() { when(navData.getState()).thenReturn(navDataState); when(socketClient.isConnected()).thenReturn(true); ObjectMapper objectMapper = new ObjectMapper(); JsonFactory jsonFactory = new JsonFactory(); socketDataSender = new SocketDataSender(socketClient, jsonFactory, objectMapper); } @Test public void testOnNavData() { mockNavData(true, 0.5f); socketDataSender.onNavData(navData); verify(socketClient).send("{\"flying\":true,\"currentHeight\":0.5}"); } @Test public void testOnNavDataWithLowAltitude() { mockNavData(true, 0.1f); socketDataSender.onNavData(navData); verify(socketClient).send("{\"flying\":true,\"currentHeight\":0.0}"); } private void mockNavData(boolean flying, float altitude) { when(navDataState.isFlying()).thenReturn(flying); when(navData.getAltitude()).thenReturn(altitude); } }